home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 SRC / Mac / Modules / scrap / Scrapmodule.c < prev    next >
Text File  |  1996-04-12  |  5KB  |  203 lines

  1.  
  2. /* ========================== Module Scrap ========================== */
  3.  
  4. #include "Python.h"
  5.  
  6.  
  7.  
  8. #define SystemSevenOrLater 1
  9.  
  10. #include "macglue.h"
  11. #include <Memory.h>
  12. #include <Dialogs.h>
  13. #include <Menus.h>
  14. #include <Controls.h>
  15.  
  16. extern PyObject *ResObj_New(Handle);
  17. extern int ResObj_Convert(PyObject *, Handle *);
  18. extern PyObject *OptResObj_New(Handle);
  19. extern int OptResObj_Convert(PyObject *, Handle *);
  20.  
  21. extern PyObject *WinObj_New(WindowPtr);
  22. extern int WinObj_Convert(PyObject *, WindowPtr *);
  23. extern PyTypeObject Window_Type;
  24. #define WinObj_Check(x) ((x)->ob_type == &Window_Type)
  25.  
  26. extern PyObject *DlgObj_New(DialogPtr);
  27. extern int DlgObj_Convert(PyObject *, DialogPtr *);
  28. extern PyTypeObject Dialog_Type;
  29. #define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type)
  30.  
  31. extern PyObject *MenuObj_New(MenuHandle);
  32. extern int MenuObj_Convert(PyObject *, MenuHandle *);
  33.  
  34. extern PyObject *CtlObj_New(ControlHandle);
  35. extern int CtlObj_Convert(PyObject *, ControlHandle *);
  36.  
  37. extern PyObject *GrafObj_New(GrafPtr);
  38. extern int GrafObj_Convert(PyObject *, GrafPtr *);
  39.  
  40. extern PyObject *BMObj_New(BitMapPtr);
  41. extern int BMObj_Convert(PyObject *, BitMapPtr *);
  42.  
  43. extern PyObject *PMObj_New(PixMapHandle);
  44. extern int PMObj_Convert(PyObject *, PixMapHandle *);
  45.  
  46. extern PyObject *WinObj_WhichWindow(WindowPtr);
  47.  
  48. #include <Scrap.h>
  49.  
  50. /*
  51. ** Generate ScrapInfo records
  52. */
  53. PyObject *SCRRec_New(itself)
  54.     ScrapStuff *itself;
  55. {
  56.  
  57.     return Py_BuildValue("lO&hhO&", itself->scrapSize,
  58.         ResObj_New, itself->scrapHandle, itself->scrapCount, itself->scrapState,
  59.         PyMac_BuildStr255, itself->scrapName);
  60. }
  61.  
  62. static PyObject *Scrap_Error;
  63.  
  64. static PyObject *Scrap_InfoScrap(_self, _args)
  65.     PyObject *_self;
  66.     PyObject *_args;
  67. {
  68.     PyObject *_res = NULL;
  69.     ScrapStuffPtr _rv;
  70.     if (!PyArg_ParseTuple(_args, ""))
  71.         return NULL;
  72.     _rv = InfoScrap();
  73.     _res = Py_BuildValue("O&",
  74.                          SCRRec_New, _rv);
  75.     return _res;
  76. }
  77.  
  78. static PyObject *Scrap_UnloadScrap(_self, _args)
  79.     PyObject *_self;
  80.     PyObject *_args;
  81. {
  82.     PyObject *_res = NULL;
  83.     long _rv;
  84.     if (!PyArg_ParseTuple(_args, ""))
  85.         return NULL;
  86.     _rv = UnloadScrap();
  87.     if ( _rv ) return PyMac_Error((OSErr)_rv);
  88.     Py_INCREF(Py_None);
  89.     return Py_None;
  90. }
  91.  
  92. static PyObject *Scrap_LoadScrap(_self, _args)
  93.     PyObject *_self;
  94.     PyObject *_args;
  95. {
  96.     PyObject *_res = NULL;
  97.     long _rv;
  98.     if (!PyArg_ParseTuple(_args, ""))
  99.         return NULL;
  100.     _rv = LoadScrap();
  101.     if ( _rv ) return PyMac_Error((OSErr)_rv);
  102.     Py_INCREF(Py_None);
  103.     return Py_None;
  104. }
  105.  
  106. static PyObject *Scrap_GetScrap(_self, _args)
  107.     PyObject *_self;
  108.     PyObject *_args;
  109. {
  110.     PyObject *_res = NULL;
  111.     long _rv;
  112.     Handle hDest;
  113.     ResType theType;
  114.     long offset;
  115.     if (!PyArg_ParseTuple(_args, "O&O&",
  116.                           ResObj_Convert, &hDest,
  117.                           PyMac_GetOSType, &theType))
  118.         return NULL;
  119.     _rv = GetScrap(hDest,
  120.                    theType,
  121.                    &offset);
  122.     _res = Py_BuildValue("ll",
  123.                          _rv,
  124.                          offset);
  125.     return _res;
  126. }
  127.  
  128. static PyObject *Scrap_ZeroScrap(_self, _args)
  129.     PyObject *_self;
  130.     PyObject *_args;
  131. {
  132.     PyObject *_res = NULL;
  133.     long _rv;
  134.     if (!PyArg_ParseTuple(_args, ""))
  135.         return NULL;
  136.     _rv = ZeroScrap();
  137.     if ( _rv ) return PyMac_Error((OSErr)_rv);
  138.     Py_INCREF(Py_None);
  139.     return Py_None;
  140. }
  141.  
  142. static PyObject *Scrap_PutScrap(_self, _args)
  143.     PyObject *_self;
  144.     PyObject *_args;
  145. {
  146.     PyObject *_res = NULL;
  147.     long _rv;
  148.     long length;
  149.     ResType theType;
  150.     char *source__in__;
  151.     int source__len__;
  152.     int source__in_len__;
  153.     if (!PyArg_ParseTuple(_args, "O&s#",
  154.                           PyMac_GetOSType, &theType,
  155.                           &source__in__, &source__in_len__))
  156.         return NULL;
  157.     length = source__in_len__;
  158.     _rv = PutScrap(length,
  159.                    theType,
  160.                    source__in__);
  161.     if ( _rv ) return PyMac_Error((OSErr)_rv);
  162.     Py_INCREF(Py_None);
  163.     return Py_None;
  164. }
  165.  
  166. static PyMethodDef Scrap_methods[] = {
  167.     {"InfoScrap", (PyCFunction)Scrap_InfoScrap, 1,
  168.      "() -> (ScrapStuff _rv)"},
  169.     {"UnloadScrap", (PyCFunction)Scrap_UnloadScrap, 1,
  170.      "() -> (OSErr)"},
  171.     {"LoadScrap", (PyCFunction)Scrap_LoadScrap, 1,
  172.      "() -> (OSErr)"},
  173.     {"GetScrap", (PyCFunction)Scrap_GetScrap, 1,
  174.      "(Handle hDest, ResType theType) -> (long _rv, long offset)"},
  175.     {"ZeroScrap", (PyCFunction)Scrap_ZeroScrap, 1,
  176.      "() -> (OSErr)"},
  177.     {"PutScrap", (PyCFunction)Scrap_PutScrap, 1,
  178.      "(ResType theType, Buffer source) -> (OSErr)"},
  179.     {NULL, NULL, 0}
  180. };
  181.  
  182.  
  183.  
  184.  
  185. void initScrap()
  186. {
  187.     PyObject *m;
  188.     PyObject *d;
  189.  
  190.  
  191.  
  192.  
  193.     m = Py_InitModule("Scrap", Scrap_methods);
  194.     d = PyModule_GetDict(m);
  195.     Scrap_Error = PyMac_GetOSErrException();
  196.     if (Scrap_Error == NULL ||
  197.         PyDict_SetItemString(d, "Error", Scrap_Error) != 0)
  198.         Py_FatalError("can't initialize Scrap.Error");
  199. }
  200.  
  201. /* ======================== End module Scrap ======================== */
  202.  
  203.